/**
 * 一次图数据传输对象
 */
export interface CircuitDiagramDTO {
  /** 一次图ID（编辑时使用） */
  id?: string
  /** 一次图名称 */
  name: string
  /** 一次图JSON数据 */
  diagramJson: string
  /** 操作人员 */
  operator?: string
}

/**
 * 一次图视图对象
 */
export interface CircuitDiagramVO {
  /** 一次图ID */
  id: string
  /** 一次图名称 */
  name: string
  /** 一次图JSON数据 */
  diagramJson: string
  /** 创建时间 */
  createTime: string
  /** 创建人员 */
  createBy: string
  /** 更新时间 */
  updateTime: string
  /** 更新人员 */
  updateBy: string
}

/**
 * 设备分组视图对象
 */
export interface DeviceGroupVO {
  /** 分组ID */
  id: string
  /** 分组名称 */
  groupName: string
  /** 分组排序 */
  sortOrder: number
  /** 创建时间 */
  createTime: string
  /** 创建人员 */
  createBy: string
  /** 设备图片列表 */
  deviceImages: DeviceImageVO[]
}

/**
 * 设备图片视图对象
 */
export interface DeviceImageVO {
  /** 设备图片ID */
  id: string
  /** 设备图片名称 */
  imageName: string
  /** 设备图片文件名 */
  fileName: string
  /** 设备图片访问URL */
  imageUrl: string
  /** 设备图片文件大小（字节） */
  fileSize: number
  /** 分组ID */
  groupId: string
  /** 分组名称 */
  groupName: string
  /** 创建时间 */
  createTime: string
  /** 创建人员 */
  createBy: string
}

/**
 * 连线特效类型
 */
export type LineEffectType = 'current' | 'water' | 'arrow' | 'pulse' | 'dash' | 'gradient'

/**
 * 连线特效配置
 */
export interface LineEffect {
  /** 特效类型 */
  type: LineEffectType
  /** 是否启用 */
  enabled: boolean
  /** 特效颜色 */
  color: string
  /** 特效速度（毫秒） */
  speed: number
  /** 特效大小 */
  size: number
  /** 特效方向 */
  direction: 'forward' | 'backward' | 'bidirectional'
  /** 特效强度 */
  intensity: number
  /** 特效透明度 */
  opacity: number
}

/**
 * 连线特效预设
 */
export interface LineEffectPreset {
  /** 预设名称 */
  name: string
  /** 预设描述 */
  description: string
  /** 特效配置 */
  effect: LineEffect
}

/**
 * 一次图绘制元素类型
 */
export interface DiagramElement {
  /** 元素ID */
  id: string
  /** 元素类型：device-设备，line-连线 */
  type: 'device' | 'line'
  /** 元素位置X坐标 */
  x: number
  /** 元素位置Y坐标 */
  y: number
  /** 元素宽度 */
  width?: number
  /** 元素高度 */
  height?: number
  /** 设备图片URL */
  imageUrl?: string
  /** 设备名称 */
  deviceName?: string
  /** 设备颜色 */
  deviceColor?: string
  /** 连线起点 */
  startPoint?: { x: number; y: number }
  /** 连线终点 */
  endPoint?: { x: number; y: number }
  /** 连线颜色 */
  lineColor?: string
  /** 连线宽度 */
  lineWidth?: number
  /** 连线特效配置 */
  lineEffect?: LineEffect
  /** 连线标签 */
  lineLabel?: string
  /** 连线类型 */
  lineType?: 'straight' | 'curve' | 'orthogonal'
} 